package com.atguigu.realtime.app.function;

import com.atguigu.realtime.util.KeyWordUtil;
import org.apache.flink.table.annotation.DataTypeHint;
import org.apache.flink.table.annotation.FunctionHint;
import org.apache.flink.table.functions.TableFunction;
import org.apache.flink.types.Row;

/**
 * @ClassName: KeyWordUDTF
 * @Description:
 * @Author: kele
 * @Date: 2021/4/27 13:50
 *
 * 使用分词器，将一行上的语句拆分成多个单词进行输出，（炸裂）
 *
 **/
@FunctionHint(output = @DataTypeHint("ROW<k STRING>"))  //标明row的字段
public class KeyWordUDTF extends TableFunction<Row> {  // 泛型是输出的类型

    public void eval(String str) {
        //通过ik分词器将搜索text切分
        for (String word : KeyWordUtil.analyzeWord(str)) {
            collect(Row.of(word));   //collect一次，输出一行
        }
    }
}
